package com.xbongbong.pro.enums.errorcodes;

import lombok.Getter;

/**
 * 错误码模块管理枚举
 * @author 魏荣杰
 *
 */
@Getter
public enum ProjectsErrorCodeEnum {

    /**
     * 系统 00
     * 100XXX 代表系统
     */
    SYSTEM("00", "01", "系统基础全局错误"),
    /**
     * 自有业务服务
     */
    /**
     * 200XXX 代表业务错误
     */
    BUSINESS_DEFAULT("01", "00", "业务级通用错误"),
    /**
     * 201XXX 代表客户的业务错误
     */
    CUSTOMER("01", "01", "客户业务"),
    /**
     * 202XXX 代表机会的业务错误
     */
    OPPORTUNITY("01", "02", "机会业务"),
    /**
     * 203XXX 代表合同的业务错误
     */
    CONTRACT("", "", "合同的业务错误"),
    /**
     * 204XXX 代表联系人的业务错误
     */
    CONTACT("", "", "联系人的业务错误"),
    /**
     * 205XXX 代表产品的业务错误
     */
    PROUDCT("", "", "产品的业务错误"),
    /**
     * 206XXX 代表跟进记录的业务错误
     */
    CUSTOMER_COMMUNICATE("", "", "跟进记录的业务错误"),
    /**
     * 207XXX 代表工作报告的业务错误
     */
    WORK_REPORT("", "", "工作报告的业务错误"),
    /**
     * 208XXX 代表回款业务错误
     */
    PAYMENT("", "", "回款业务错误"),
    /**
     * 209XXX 代表审批业务错误
     */
    APPROVAL("", "", "审批业务错误"),
    /**
     * 210XXX 代表入库业务错误
     */
    INSTOCK("", "", "入库业务错误"),
    /**
     * 211XXX 代表销售简报业务错误
     * 217XXX 代表销售简报的业务错误
     */
    SALE_REPORT("", "", "销售简报业务错误"),
    /**
     * 212XXX 代表出库单业务错误
     */
    OUTSTOCK("", "", "出库单业务错误"),
    /**
     * 213XXX 代表分组业务错误
     */
    GROUP("", "", "分组业务错误"),
    /**
     * 214XXX 代表访客计划业务错误
     */
    COMMNUICATE_PLAN("", "", "访客计划业务错误"),
    /**
     * 226XXX 代表付款的业务错误
     */
    PAY("", "", "付款业务错误"),
    /**
     * 216XXX 代表发票的业务错误
     * 217XXX 代表销售简报的业务错误（实际是进项发票）
     */
    INVOICE("", "", "发票的业务错误"),
    /**
     * 218XXX 代表公海客户的业务错误
     */
    PUBLIC_POOL("", "", "公海客户的业务错误"),
    /**
     * 215XXX 代表退货退款业务错误（实际是退货退款）
     * 219XXX 代表退货退款的业务错误
     */
    REFUND("", "", "退货退款的业务错误"),
    /**
     * 220XXX 代表合同团队的业务错误
     */
    TEAM("", "", "团队的业务错误"),
    /**
     * 222XXX 代表工单的业务错误
     */
    WORK_ORDER("", "", "工单的业务错误"),
    /**
     * 223XXX 代表搜索引擎的业务错误
     */
    SEARCH_ENGINE("", "", "搜索引擎的业务错误"),
    /**
     * 224XXX 代表代表统计服务的业务错误
     */
    STATISTICS_SERVICES("", "", "统计服务的业务错误"),
    /**
     * 225XXX 代表采购合同的业务错误
     */
    PURCHASE("", "", "采购合同的业务错误"),
    /**
     * 227XXX 代表推送错误
     * 380XXX 消息相关错误
     * 390XXX 消息相关错误
     */
    MESSAGE("", "", "推送消息错误"),
    /**
     * 228XXX 代表盘点单的业务错误
     */
    INVENTORY("", "", "盘点单的业务错误"),
    /**
     * 229XXX 代表调拨单的业务错误
     */
    TRANSFER("", "", "调拨单的业务错误"),
    /**
     * 230XXX 代表采购退货的业务错误
     */
    RETURNED_PURCHASE("", "", "采购退货的业务错误"),
    /**
     * 231XXX 代表装配出入库单的业务错误
     */
    ASSEMBLE("", "", "装配出入库单的业务错误"),
    /**
     * 232XXX 代表打印模板错误
     */
    PRINT("", "", "打印模板错误"),
    /**
     * 233XXX 代表供应商的错误
     */
    SUPPLIER("", "", "供应商的错误"),
    /**
     * 234XXX 代表导出的错误
     */
    EXPORT("", "", "导出的错误"),
    /**
     * 235XXX 代表导入的错误
     */
    IMPORT("", "", "导入的错误"),
    /**
     * 236XXX 代表编号设置的错误
     */
    NUMBERING_SETTINGS("", "", "编号设置的错误"),
    /**
     * 237XXX 代表公告活动的错误
     */
    ANNOUNCEMENT_ACTIVITIES("", "", "公告活动的错误"),
    /**
     * 238XXX 代表客户阶段的错误
     */
    CUSTOMER_STAGE("", "", "客户阶段的错误"),
    /**
     * 239XXX 代表签到的错误
     */
    SIGN_IN("", "", "签到的错误"),
    /**
     * 240XXX 代表业绩目标相关的错误
     */
    PERFORMANCE("", "", "业绩目标相关的错误"),
    /**
     * 241XXX 代表BI报表的错误
     */
    BI("", "", "BI报表的错误"),
    /**
     * 242XXX 代表生产管理--BOM清单相关业务错误
     */
    BOM("", "", "BOM清单相关业务错误"),
    /**
     * 243XXX 代表生产管理--生产单相关业务错误
     */
    PRODUCTION_ORDER("", "", "生产单相关业务错误"),
    /**
     * 244XXX 代表仓库的错误
     */
    WAREHOUSE("", "", "仓库的错误"),
    /**
     * 246XXX 代表报价单的业务错误
     */
    QUOTATION("", "", "报价单的业务错误"),
    /**
     * 247XXX 代表新回款计划错误
     */
    PAY_PLAN("", "", "回款计划错误"),
    /**
     * 248XXX 代表资金设置错误
     * 1001XXX 资金设置错误
     * 250XXX
     */
    FUNDS_SET("", "", "资金设置错误"),
    /**
     * 249XXX 代表客户对账单错误
     */
    STATEMENT("", "", "客户对账单错误"),
    /**
     * 251XXX 代表经销商错误
     */
    DISTRIBUTOR("", "", "经销商错误"),
    /**
     * 252XXX 供应商联系人相关错误提醒
     */
    SUPPLIER_CONTACT("", "", "供应商联系人相关错误提醒"),
    /**
     * 253XXX 代表信用管理错误
     */
    CREDIT_MANAGEMENT("", "", "信用管理错误"),
    /**
     * 254XXX 代表结账&反结账错误
     */
    SETTLE_ACCOUNT("", "", "结账&反结账错误"),
    /**
     * 261XXX 代表结账&反结账错误
     */
    BUSINESS_RULE("", "", "业务规则错误"),
    /**
     * 265XXX 代表支付相关错误
     */
    PAYMENT_RELATED("", "", "支付相关错误"),
    /**
     * 270XXX 资金校正错误
     */
    PAYMENT_CORRECTION("", "", "资金校正错误"),
    /**
     * 271XXX 团队相关错误
     * 290XXX 协同团队相关错误
     */
    USER_TEAM("", "", "团队相关错误"),
    /**
     * 272XXX 工作流设置错误
     */
    WORKFLOW_SET("", "", "工作流设置错误"),
    /**
     * 280XXX 精线索错误
     */
    FINE_CLUE("", "", "精线索错误"),
    /**
     * 290XXX 首页错误
     */
    INDEX("", "", "首页错误"),
    /**
     * 300XXX 应用市场错误
     */
    APP_STORE("", "", "应用市场错误"),
    /**
     * 301XXX 话务中心错误
     */
    CALL_CENTER("", "", "话务中心错误"),
    /**
     * 302XXX 度言错误
     */
    DU_YAN("", "", "度言错误"),
    /**
     * 303XXX 智能外呼错误
     */
    INTELLIGENT_OUTBOUND("", "", "智能外呼错误"),
    /**
     * 303XXX图表错误
     * 1500001 - 1500005
     */
    CHART("", "", "图表错误"),
    /**
     * 350XXX 业务模板错误
     */
    TEMPLATE("", "", "业务模板错误"),
    /**
     * 351XXX 分组错误
     */
    GROUP2("", "", "分组错误"),
    /**
     * 360XXX 字段类型错误
     */
    FIELD_TYPE("", "", "字段类型错误"),
    /**
     * 361XXX 业务类型错误
     */
    BUSINESS_TYPE("", "", "业务类型错误"),
    /**
     * 370XXX 数据字典错误
     */
    DATA_DICTIONARY("", "", "数据字典错误"),
    /**
     * 391XXX 日志相关错误
     */
    LOG("", "", "日志相关错误"),
    /**
     * 392XXX 系统标签相关错误
     * 1120XXX 标签分组先关错误
     */
    SYSTEM_LABEL("", "", "系统标签相关错误"),
    /**
     * 400XXX xbbCall错误
     */
    XBB_CALL("", "", "xbbCall错误"),
    /**
     * 401XXX 搜客报错提示
     */
    SEARCH_CUSTOMER("", "", "搜客报错提示"),
    /**
     * 402XXX 模板中心报错提示
     */
    TEMPLATE_CENTER("", "", "模板中心报错提示"),
    /**
     * 403XXX 镜像报错提示
     */
    MIRROR("", "", "镜像报错提示"),
    /**
     * 405XXX 外链相关提示
     */
    OUT_LINK("", "", "外链相关提示"),
    /**
     * 410XXX 延时任务提示
     */
    DELAY_TASK("", "", "延时任务错误"),
    /**
     * 260XXX
     * 500XXX pro的错误
     */
    PRO("", "", "pro的错误"),
    /**
     * 501XXX 代表城市合伙人项目的错误
     */
    CITY_PARTNER("", "", "城市合伙人项目的错误"),
    /**
     * 600XXX 代表PAAS平台业务错误
     */
    PAAS("", "", "PAAS平台业务错误"),
    /**
     * 700XXX API项目错误
     */
    API("", "", "API项目错误"),
    /**
     * 800XXX 代表价值攻略错误
     */
    RAIDERS("", "", "价值攻略错误"),
    /**
     * 900XXX 跟其他第三方应用连接错误
     */
    THIRD_PARTY_USAGE("", "", "第三方应用连接错误"),
    /**
     * 901XXX PK榜
     */
    PK("", "", "PK榜错误"),
    /**
     * 1000XXX 资金账户错误
     */
    FUND_ACCOUNT("", "", "资金账户错误"),
    /**
     * 1010XXX 钉钉群错误
     */
    BUNDLE("", "", "钉钉群错误"),
    /**
     * 11000XX 个人试用错误
     */
    PERSONAL_TRIAL("", "", "个人试用错误"),
    /**
     * 11001XX 市场管理
     * 11002XX 市场活动
     * 11003XX 线索
     * 111000X 线索阶段
     * 111101X 线索公海同步
     */
    CLUE("", "", "个人试用错误"),
    /**
     * 营销错误
     * 150XXXXX > API_ERROR_1500005
     */
    MARKETING("", "", "营销错误"),
    /**
     * 决策树错误
     * 151XXXXX
     */
    DECISION_TREE("", "", "决策树错误"),
    /**
     * 152XXXX 酷应用错误
     */
    COOL_APP("", "", "酷应用错误"),

    /**
     * 153XXXX 工单v2错误
     */
    WORK_ORDER_V2("", "", "工单v2错误");

    ;
    /**
     * 应用code
     * 00 系统
     * 01 自有业务服务
     * 02 第三方服务
     *
     */
    private final String appCode;
    /**
     * 模块code
     */
    private final String moduleCode;
    /**
     * 模块名称
     */
    private final String name;

    ProjectsErrorCodeEnum(String appCode, String moduleCode, String name) {
        this.appCode = appCode;
        this.moduleCode = moduleCode;
        this.name = name;
    }
}
